01
协程初探
为什么需要协程?协程与线程、进程的区别。C语言实现协程的挑战。
概念入门
02
函数调用栈原理
栈帧结构、调用约定、setjmp/longjmp 基础。
栈底层
03
setjmp/longjmp 实战
实现一个简单的非局部跳转,模拟协程切换。
跳转模拟
04
ucontext 系列函数
getcontext, setcontext, makecontext, swapcontext 详解。
ucontextAPI
05
基于 ucontext 的协程框架设计
协程结构体定义、调度器设计。
架构调度器
06
协程的创建与销毁
分配栈空间、初始化上下文、资源回收。
内存生命周期
07
协程的切换与调度
yield 与 resume 的实现,调度器主循环。
切换核心
08
协程状态管理
就绪、运行、阻塞、死亡状态转换。
状态机设计
09
多协程协作
实现生产者-消费者模型。
协作经典
10
协程间的数据传递
通道(Channel)设计与实现。
Channel通信
11
协程同步原语
协程锁(CoMutex)的实现。
锁同步
12
协程条件变量
CoCond 的实现与 wait/signal 机制。
条件变量等待
13
协程与事件循环
将协程调度器集成到 epoll/select 中。
事件驱动IO
14
异步 I/O 基础
阻塞与非阻塞 I/O,I/O 多路复用。
IO多路复用
15
封装异步读操作
基于协程的非阻塞 read 封装。
读非阻塞
16
封装异步写操作
基于协程的非阻塞 write 封装。
写非阻塞
17
实现协程版 TCP 服务器
accept、read、write 全异步化。
TCP服务器
18
协程超时处理
在协程中实现 sleep 与定时器。
定时器超时
19
协程池
管理大量协程,避免频繁创建销毁。
池化性能
20
协程中的错误处理
异常捕获与错误码传递。
错误健壮性
21
协程与信号
如何处理信号对协程调度的影响。
信号中断
22
协程调试技巧
打印协程栈、跟踪调度日志。
调试日志
23
性能优化
减少上下文切换开销,缓存友好设计。
优化缓存
24
汇编级协程实现 (x86_64)
使用汇编保存和恢复寄存器(x86_64 架构)。
汇编x86_64
25
汇编级协程实现 (ARM64)
ARM64 架构下的协程切换。
汇编ARM64
26
对称协程与非对称协程
两种模型的对比与实现。
模型对比
27
协程库的线程安全
多线程调度器设计。
线程安全并发
28
Work Stealing 调度
实现负载均衡的协程调度器。
负载均衡调度
29
协程与 C++ 互操作
在 C++ 项目中调用 C 协程库。
C++互操作
30
综合实战:高并发 HTTP 客户端/服务器
构建一个基于协程的高并发 HTTP 客户端/服务器。
实战HTTP